﻿using System;
using System.Collections.Generic;
using System.Text;

using JoyServer.Events;

namespace JoyServer
{
	/// <summary>
	/// ログ管理用クラス
	/// </summary>
	class Logger : EventDispatcher
	{
		/// <summary>
		/// ログの最大行数
		/// </summary>
		public const int LOG_MAX = 100;

		/// <summary>
		/// ログを入れる文字列のリスト
		/// </summary>
		private List<String> log;

		/// <summary>
		/// コンストラクタ
		/// </summary>
		public Logger()
		{
			log = new List<String>();
		}

		/// <summary>
		/// ログを全て読み取り
		/// </summary>
		/// <returns></returns>
		public List<String> read()
		{
			return log;
		}

		/// <summary>
		/// ログの追加
		/// </summary>
		/// <param name="line"></param>
		public void write(String line)
		{
			// ログの最大行数を超えない範囲で
			// ログを追加する
			log.Insert(0, line);
			if (log.Count > LOG_MAX)
			{
				log.RemoveAt(log.Count - 1);
			}

			// ログ追加イベントを発行する
			LoggerEvent loggerEvent;
			loggerEvent = new LoggerEvent(this, LoggerEvent.ADDED);
			loggerEvent.line = line;
			dispatchEvent(loggerEvent);
		}
	}
}
